iT邦幫忙

2023 iThome 鐵人賽

DAY 12
1

Zabbix Logo

資訊處理流程 生成 收集 儲存 使用
Zabbix Agent
Zabbix

Zabbix 是一款開源的系統監控工具,不僅涵蓋資料採集、收集、呈現及告警等完整功能,且除了大家熟悉的服務和伺服器監控外,還可用於監控網路設備。作為本次系列中最資深的監控工具,Zabbix 的創立可追溯至 1998 年,當時 Alexei Vladishev 在評估系統監控工具時,發現市面上的產品不僅購買成本高,維護成本也高得嚇人。於是,他開始開發 Zabbix,並在 2001 年推出 Zabbix 1.0 Alpha 1 版。目前最新的 6.4 版於 2023 年 5 月發布,但它的重大安全性更新將於 2023 年 12 月 31 日結束。如有需要,可選擇 6.0 LTS 版,重大安全性更新將持續到 2027 年 2 月 28 日,詳細說明可參考官網的 Zabbix Life Cycle & Release Policy

Zabbix 主要是透過 Server-Client 架構收集與處理資料:由 Client(Agent)負責收集,然後回傳給 Server 儲存。其主要元件包括:

  1. Zabbix Server:核心部分,負責接收、儲存資料和觸發告警,也可以可主動發送 Request 監控外部服務。
  2. Web interface:用以操作及檢視資料,並設定監控項目等設定。
  3. Zabbix Proxy:在 Server 與 Client 不能直接連線時,作為中繼使用。
  4. Zabbix Agent:負責收集並回傳資料給 Server 儲存。

Zabbix architecture
Zabbix 架構圖,圖片來源:scmGalaxy

雖然通常會形容 Zabbix 為 Server-Client 架構,但實際上可以只配置 Zabbix Server,只由 Server 發送 Request 進行監控,達到 Agent Less 的模式。

Web interface 不僅可檢視收集資料,還可設計 Dashboard。但如果同時有其他數據源也想統一呈現的話,可以搭配也支援查詢 Zabbix 的 Grafana 使用,在 Lab 中會示範如何連接 Zabbix Data Source。

Concepts

Host

Host 是 Zabbix 中被監控的對象,通常代表一台實際的伺服器、網路裝置,或是其他任何需要監控的設備和服務。每個 Host 可以有多個監控項目(Item),並且可以設定多個 Trigger、圖表、Web Scenario 等。

Zabbix server Host
此為 Zabbix server 的 Host 設定,用於監控 Zabbix server 自身,使用了「Linux by Zabbix agent Template」跟「Zabbix server health」兩個 Template

Hosts
可同時監控多個 Host

Template

Template 用於 Zabbix 中以標準化的方式監控多個 Hosts。一個 Template 可以定義多個監控項目(Item)、Trigger、圖表和其他相關的監控設置。當有多個相似的 Host 時,可以直接套用 Template 確保所有的監控設置都是一致的。當 Template 更新時,所有使用該 Template 的 Hosts 也會自動更新監控項目等設定。

Template 是 Zabbix 中快速設定監控不同設備或服務的關鍵,除了內建的 Template 外,使用者也可以自行建立,或是從 Monitoring and Integration Solutions 下載其他人或產品公司分享的 Template 或相容的監控工具。

Linux by Zabbix agent Template
Linux by Zabbix agent Template

Linux by Zabbix agent Template's Items
Linux by Zabbix agent Template 的監控項目

Group

Group 是 Zabbix 中用來分類 Host 的概念,一個 Host 可以屬於多個 Group,但至少需有一個 Group。當有多個相似的 Host 時,可以將它們分類到同一個 Group,方便管理。

Zabbix server Host
此為 Zabbix server 的 Host 設定,被歸類至 Zabbix servers 這個 Group

Web Scenario

Web Scenario 是 Zabbix 中用來模擬、監控和檢查從使用者的角度來看的 Web 服務的可用性和性能。透過 Web Scenario,可以模擬一系列的 HTTP 或 HTTPS 請求和相應的動作,例如登入 Web 應用程式、點擊連結等,用以確認 Web 服務是否正常運作,並在發生問題時迅速收到通知。

Web Scenario Data
使用 Web Scenario 收集到的資料

Lab

範例程式碼:12-zabbix

Quick Start

  1. 啟動所有服務

    docker-compose up -d
    
  2. 前置設定

    1. 進入 Zabbix Server Container 啟動 Zabbix Agent

      docker exec -it -u root zabbix-server-mysql /bin/bash
      service zabbix-agent start
      CTRL + D # 離開 Container
      
    2. 進入 Grafana Container 安裝 Zabbix Data Source Plugin

      1. 安裝 Zapix Data Source Plugin

        docker exec -it grafana /bin/bash
        grafana-cli plugins install alexanderzobnin-zabbix-app
        CTRL + D # 離開 Container
        
      2. 重新啟動 Grafana 讓 Plugin 生效

        docker-compose restart grafana
        
  3. 檢視服務

    1. FlaskAPI: http://localhost:8000
    2. Zabbix: http://localhost,登入帳號密碼為 Admin/zabbix,如果出現 DB 相關的錯誤訊息,請等待一段時間
    3. Grafana: http://localhost:3000,登入帳號密碼為 admin/admin
      1. 點擊左上 Menu > Explore > Zabbix,即可看到 Zabbix Data Source 的資料
        1. 若已新增其他 Host 且確定有收到資料,但 Group 只有看到 Zabbix servers,需至 Data Source > Zabbix 點擊最最下面的 Save & Test,更新快取後即可看到其他 Group
      2. 點擊左上 Menu > Dashboards > Zabbix - Full Server Status,即可看到透過 Provisioning 建立的 Dashboard
  4. 參考「新增監控項目」章節,建立新的監控項目

  5. 關閉所有服務

    docker-compose down
    

Goals

  1. 建立 Zabbix 完整服務,Zabbix Server 使用的 Image 為增加 Zabbix Agent 的版本,模擬實際可以正常監控 Zabbix Server 的狀態
  2. 建立 Zabbix Agent Container,並連接至 Zabbix Server,模擬監控 Linux Server
  3. 建立 FastAPI,於 Zabbix Server 使用 Web Scenario 監控服務
  4. 使用 Grafana 連接 Zabbix Data Source

新增監控項目

Zabbix Agent

  1. 於左側 Monitoring 選單的 Hosts 頁籤中或左側 Data Collection 選單的 Hosts 頁籤中,點擊右上的 Create host 按鈕
    Monitoring
    Data Collection

  2. 新增 zabbix-agent Host,如圖設定 Host name、Templates、Host groups,Interfaces 必須設定使用 DNS 並輸入 DNS name 為 zabbix-agent,其他預設即可
    Host setting

  3. 設定完成後稍待一下,可於 Monitoring 選單的 Hosts 頁籤中看到 zabbix-agent 的 Availability 狀態 ICON 會變為綠色,表示 Zabbix Server 已經和 Zabbix Agent 連接成功
    Host Status

FastAPI Web Scenario

  1. 於左側 Monitoring 選單的 Hosts 頁籤中或左側 Data Collection 選單的 Hosts 頁籤中,點擊右上的 Create host 按鈕

  2. 新增 fastapi Host,Host groups 選擇 Application,其他預設即可
    Host setting

  3. 於左側 Data Collection 選單的 Hosts 頁籤中,點擊 fastapi Host 的 Web
    Web

  4. 點擊右上的 Create web scenario 按鈕,新增 Web Scenario
    Create scenario

  5. 設定 Web Scenario 的基礎設定,如圖設定 Name,其他預設即可
    Scenario setting

  6. 進入 Step 頁籤,點擊 Add
    Step

  7. 設定 Step 的基礎設定,如圖設定 Name、URL、Required status codes,其他預設即可
    Step setting

  8. 可再新增其他 Step,如圖所示,新增完點擊 Add 或 Update 儲存
    Step setting

  9. 設定完成後稍待一下,可於 Monitoring 選單的 Hosts 頁籤中至 fastapi 的 Latest data 查看執行 Web Scenario 所收集的數據
    Host Status
    fastapi data

小結

Zabbix 提供了從監控資料的生成、收集、儲存到使用的全面解決方案。透過 Agent 和各式 Template 的搭配,使用者可以快速建立各種監控項目。如果內建的 Template 無法滿足需求,還可以參考 Monitoring and Integration Solutions 上由第三方提供的更多 Template 與監控工具。此外,Web Scenario 功能擴大了監控範疇,不僅可以監控 Server 的狀態,還能根據實際業務流程監控自行開發的 Web 服務。

至此,關於指標的概念及各種工具的介紹就告一段落,下一篇我們將開始探討日誌 Logs 的概念與工具。

參考資料

  1. Zabbix - Full Server Status

上一篇
StatsD - 捍衛效能的守護神
下一篇
Logs - 紀錄的一切都將成為呈堂證供
系列文
時光之鏡:透視過去、現在與未來的 Observability30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言